#include <iostream>
using namespace std;

typedef long long ll;

const int N = 20;

ll n, m;
ll p[N];    //获取输入
ll res = 0; //虽然最后的结果一定是不会爆int的，但是过程中不保证不会

int main()
{
    freopen("cin.txt", "r", stdin);
    cin >> n >> m;
    for (int i = 0; i < m; ++i)
        cin >> p[i];
    //获取输入
    for (int i = 1; i < 1 << m; ++i) //利用i的二进制来对数据进行遍历
    {
        int flat = -1;
        ll k = 1; //用来存储本轮的除数
        for (int j = 0; j < m; ++j)
            if (i >> j & 1) //如果i的第j位为1，既表示p_i被选中了
            {
                if (k * p[j] > n) //因为如果分子比分母打，那么后面的计算就失去意义了，而且还可能爆ll
                {
                    k = -1; //标记不合理
                    break;  //直接退出本次选择
                }
                k *= p[j];
                flat *= -1;
            }
        if (k == -1)
            continue;
        res += flat * n / k;
    }
    cout << res;
}